"""
@author: chenl
@file: 2023-04-15-面向对象-三乐购物系统.py
@time: 2023/4/13 15:55
"""

# ###购物系统类###
# 实例属性
#   -- 商品信息
#   -- 系统说明信息
#   -- 当前用户 -- 多个用户
# 方法
#   -- 登录
#   -- 注册
#   -- 查看商品
#   -- 添加购物车
#   -- 结算

# ###用户类###
# 实例属性
#   -- 用户名
#   -- 密码
#   -- 余额
#   -- 购物车
# 方法


# user class
class User:
    def __init__(self, name, passwd, init_amount):
        self.name = name
        self.passwd = passwd
        self.init_amount = init_amount
        self.shopping_car = {}

# shopping_system
class ShoppingSystem:
    def __init__(self, goods_info, sys_info):
        self.goods_info = goods_info
        self.sys_info = sys_info
        self.userdict = {}

    def register(self, name, passwd, inisial_amount):
        # 创建一个新用户，实例化User类
        if name not in self.userdict:
            user = User(name, passwd, inisial_amount)
            # 把名字作为key，user对象作为value存在self.userdict里面
            self.userdict[name] = user
        else:
            print("用户已存在")

fruit_goods = {
    'F0001': {"name": "苹果", "price": 8},
    'F0002': {"name": "香蕉", "price": 3}
}

medicine_goods = {
    'M0001': {"name": "奥司他韦", "price": 60},
    'M0002': {"name": "抗病毒口服液", "price": 30}
}

system1 = ShoppingSystem(fruit_goods, "水果购物系统")
system2 = ShoppingSystem(medicine_goods, "药品购物系统")

system = [system1, system2]

while 1:
    print("当前平台已有购物系统如下:")
    for k, v in enumerate(system):
        print(f"{k}.{v.sys_info}")
    c1 = input("请输入你的选择:")
    if c1 == "q":
        break
    if c1.isdigit() and int(c1) < len(system):
        c1 = int(c1)
        current_system = system[c1]
        print(f"欢迎进入{current_system.sys_info}".center(40, "*"))
        while 1:
            c2 = input("1.登录\n2.注册\n3.展示商品信息\n4.添加购物车\n5.结算\n请输入你的选择(按q退出):")
            if c2 == "q":
                break
            if c2 == "1":
                name = input("请输入用户名：")
                passwd = input("请输入密码：")
                if name not in current_system.userdict:
                    print("没有该用户，请注册后再来")
                elif passwd == current_system.userdict[name].passwd:
                    print("登录成功")
                else:
                    print("密码错误，请重新输入！")
            if c2 == "2":
                name, passwd, amount = input("请输入你的名字、密码、初始金额(用空白分隔)：").split()
                current_system.register(name, passwd, amount)
            if c2 == "3":
                print(f"{current_system.sys_info}商品信息如下".center(40, "="))
                print(f"商品id\t\t\t商品名称\t\t\t商品价格")
                for k, v in current_system.goods_info.items():
                    print(f"{k}\t\t\t{v['name']}\t\t\t{v['price']}")
            if c2 == "4":
                print("购物车信息如下".center(40, "="))
                print("请输入要添加的商品：")

            if c2 == "5":
                print("购物车信息如下".center(40, "="))
            else:
                print("输入有误,请重新输入！")
    else:
        print("输入有误，请重新输入!")
